import $var from "./var.js";
import $skip from "./skip.js";
import $fun from "./fun.js";
import request from "./request.js";
let $get = request.$get;
let $post = request.$post;





var mobileAuthInfo;

var $wechart = {
	//App 微信登录
	async appLogin(params = {}) {
		params.url = params.url || '/api/wechart/app-login';
		return new Promise((resolve, reject) => {
			uni.login({
				provider: 'weixin',
				"onlyAuthorize": true, 
				success: function(r) {
					console.log('App 登录 ：', r);
					if (r.errMsg !== 'login:ok') return false;
					$post({
						url: params.url,
						data: {
							code:r.code,
							// openid: r.authResult.openid,
							// unionid: r.authResult.unionid,
						},
						afterFun(res) {
							console.log(res);
							resolve(res); //返回
						}
					})
				},fail(r) {
					$fun.showMsg(r.errMsg);
					console.log(r)
				}
			});
		})
	},
	//小程序 - 静默授权登录
	async appletLogin(params = {}) {
		params.url = params.url || '/api/wechart/applet-login'
		return new Promise((resolve, reject) => {
			uni.login({
				provider: 'weixin',
				scopes: 'auth_user',
				success: function(response) {
					console.log('小程序 静默登录：', response);
					if (response.errMsg !== 'login:ok') return false;
					$post({
						url: params.url,
						data: { code: response.code },
						afterFun(res) {
							if (res.session_key){
								$fun.setCache('applet_session_key',res.session_key)
							}
							console.log(res);
							resolve(res); //返回
						}
					});
				}
			});
		})
	},
	//小程序 - 获取手机号
	async appletGetMobile(params = {}) {
		params.url = params.url || '/api/wechart/applet-get-mobile'
		return new Promise((resolve, reject) => {
			let session_key = $fun.getCache('applet_session_key');
			if (!session_key) { throw 'session_key 不存在' }
			uni.getUserInfo({
				provider: "weixin",
				success: function(e) {
					console.log(e)
					$post({
						url: params.url,
						data: {
							iv: e.iv,
							encryptedData: e.encryptedData,
							session_key: session_key,
						},
						afterFun(res) {
							console.log(res);
							resolve(res); //返回
						}
					});
				},
				fail: function(err) {
					console.log(err)
				}
			})
		})
	},

	//-------------------------------------------------------------------------------------------------

	//小程序 - 获取openid
	async appletGetOpenid() {
		return new Promise((resolve, reject) => {
			uni.login({
				provider: 'weixin',
				scopes: 'auth_user',
				success: function(response) {
					console.log('小程序 静默登录：', response);
					if (response.errMsg !== 'login:ok') return false;
					$get({
						url: '/api/wechart/applet-get-openid-by-code?code=' +
							response.code,
						afterFun(res) {
							console.log('小程序 code 换取 session_key：', res);
							$var.wechart_applet.openid = res.openid || '';
							$var.wechart_applet.unionid = res.unionid || '';
							$var.wechart_applet.session_key = res.session_key || '';
							resolve(res.openid); //返回
						}
					});
				}
			});
		})
	},
	//小程序 - 授权用户信息 - 静默授权
	async appletAuthUser() {
		return new Promise((resolve, reject) => {
			uni.login({
				provider: 'weixin',
				scopes: 'auth_user',
				success: function(response) {
					console.log('小程序 静默登录：', response);
					if (response.errMsg !== 'login:ok') return false;
					$get({
						url: '/api/wechart/applet-auth-login?code=' + response.code,
						afterFun(res) {
							console.log('小程序 code 换取 session_key：', res);
							$var.wechart_applet.openid = res.openid || '';
							$var.wechart_applet.unionid = res.unionid || '';
							$var.wechart_applet.session_key = res.session_key || '';
							resolve(res); //返回
						}
					});
				}
			});
		})
	},
	//小程序 - 授权手机号登录
	async appletAuthMobileLogin(e) {
		let authUserInfo = await $wechart.appletAuthUserLogin();
		if (authUserInfo.login_auth_info) {
			return authUserInfo;
		}
		let authMobileInfo = await $wechart.appletAuthMobile(e, authUserInfo);
		return authMobileInfo;
	},
	//小程序 - 授权手机号
	async appletAuthMobile(e, authUserInfo) {
		return new Promise((resolve, reject) => {
			console.log('小程序 授权手机号：', e);
			console.log('小程序 授权手机号：', e.code);
			if (e.detail.errMsg !== 'getPhoneNumber:ok') {
				return false;
			}
			$post({
				url: '/api/wechart/applet-auth-mobile-login',
				data: {
					encryptedData: e.detail.encryptedData,
					iv: e.detail.iv,
					session_key: authUserInfo.session_key,
					openid: authUserInfo.openid,
					unionid: authUserInfo.unionid,
				},
				afterFun(res) {
					resolve(res); //返回
				}
			});
		})
	},
	//小程序 - 授权用户信息
	appletGetUserInfo() {
		return new Promise((resolve, reject) => {
			uni.getUserProfile({
				desc: '自动注册',
				success(resp) {
					console.log('微信小程序授权：用户信息', resp)
					if (resp.errMsg !== 'getUserProfile:ok') return false;

				}
			})
		});
	},
	// appletAuthMobile(params) {
	// 	let e = params.e;
	// 	console.log('微信小程序手机授权：', e);
	// 	if (e.detail.errMsg !== 'getPhoneNumber:ok') {
	// 		return false;
	// 	}
	// 	mobileAuthInfo = e.detail;
	// 	$wechart.appletGetOpenid({
	// 		success: (res) => {
	// 			$post({
	// 				url: '/api/wechart/get-mobile',
	// 				data: {
	// 					encryptedData: mobileAuthInfo.encryptedData,
	// 					iv: mobileAuthInfo.iv,
	// 					session_key: res.session_key,
	// 					openid: res.openid
	// 				},
	// 				afterFun(res) {
	// 					console.log('微信小程序手机号登录', res);
	// 					if (res.mobile) {
	// 						$var.wechart_applet.mobile = res.mobile || '';
	// 						params.register();
	// 					} else if(res.login_auth_info) {
	// 						params.success();
	// 					}
	// 				}
	// 			});
	// 		}
	// 	})

	// },
	//微信小程序授权用户信息
	appletRegister(params) {
		uni.getUserProfile({
			desc: '自动注册',
			success(resp) {
				console.log('微信小程序授权：用户信息', resp)
				if (resp.errMsg !== 'getUserProfile:ok') return false;
				$post({
					url: '/wechart/login/applet',
					data: {
						mobile: $var.wechart_applet.mobile,
						session_key: $var.wechart_applet.session_key,
						encryptedData: resp.encryptedData,
						iv: resp.iv,
						wechart_union_id: $var.wechart_applet.unionid,
						wechart_applet_id: $var.wechart_applet.openid
					},
					afterFun() {
						params.success && params.success();
					}
				})
			}
		})
	},



	// appLogin() {
	// 	console.log('wechat app login')
	// 	uni.login({
	// 		"provider": "weixin",
	// 		"onlyAuthorize": true, // 微信登录仅请求授权认证
	// 		success: function(event) {
	// 			console.log(event)
	// 			$post({
	// 				url:'/api/login_wx_app',
	// 				data:{ 
	// 					openid: event.code },
	// 				afterFun(r){
	// 					console.log(r);
	// 				}
	// 			})
	// 		},
	// 		fail: function(err) {
	// 			console.log(err)
	// 		}
	// 	})

	// },
};
export default $wechart;